Вам даны массив и число N. Нужно вернуть True, если в массиве есть такие два числа A и B, что их сумма A + B даёт N. В противном случае нужно вернуть False. Примеры: [1, 2, 3, 4], 5 ⇒ True [3, 4, 6], 6 ⇒False
✔️Можно, конечно, применить брутфорс, но есть решение получше. Его сложность составит O(n). Вот как оно выглядит:
def two_sum(numbers, target): index = {num: i for (i, num) in enumerate(numbers)}
n = len(numbers)
for i in range(n): a = numbers[i] b = target - a
if b in index: j = index[b] if i != j: return True
return False
Здесь сначала создаётся словарь index, который хранит числа из массива в качестве ключей и их индексы в массиве в качестве значений. Затем идёт перебор элементов массива. Для каждого элемента a вычисляется число b, которое необходимо для достижения суммы target. Далее проверяется, содержится ли b в словаре index. Если да, то дополнительно проверяется, не совпадает ли индекс текущего элемента a с индексом элемента b. Если индексы различны, это означает, что была найдена пара чисел, сумма которых равна target.
Вам даны массив и число N. Нужно вернуть True, если в массиве есть такие два числа A и B, что их сумма A + B даёт N. В противном случае нужно вернуть False. Примеры: [1, 2, 3, 4], 5 ⇒ True [3, 4, 6], 6 ⇒False
✔️Можно, конечно, применить брутфорс, но есть решение получше. Его сложность составит O(n). Вот как оно выглядит:
def two_sum(numbers, target): index = {num: i for (i, num) in enumerate(numbers)}
n = len(numbers)
for i in range(n): a = numbers[i] b = target - a
if b in index: j = index[b] if i != j: return True
return False
Здесь сначала создаётся словарь index, который хранит числа из массива в качестве ключей и их индексы в массиве в качестве значений. Затем идёт перебор элементов массива. Для каждого элемента a вычисляется число b, которое необходимо для достижения суммы target. Далее проверяется, содержится ли b в словаре index. Если да, то дополнительно проверяется, не совпадает ли индекс текущего элемента a с индексом элемента b. Если индексы различны, это означает, что была найдена пара чисел, сумма которых равна target.
#алгоритмы #python
BY Библиотека собеса по Data Science | вопросы с собеседований
Warning: Undefined variable $i in /var/www/tg-me/post.php on line 283
A Telegram spokesman declined to comment on the bond issue or the amount of the debt the company has due. The spokesman said Telegram’s equipment and bandwidth costs are growing because it has consistently posted more than 40% year-to-year growth in users.
Telegram has exploded as a hub for cybercriminals looking to buy, sell and share stolen data and hacking tools, new research shows, as the messaging app emerges as an alternative to the dark web.An investigation by cyber intelligence group Cyberint, together with the Financial Times, found a ballooning network of hackers sharing data leaks on the popular messaging platform, sometimes in channels with tens of thousands of subscribers, lured by its ease of use and light-touch moderation.Библиотека собеса по Data Science | вопросы с собеседований from tw